#include <iostream>
#include <vector>
#include <algorithm>
#define ll long long
using namespace std;
int abs(int a) {
if(a<0) return -a;
return a;
}
void solve() {
int n,k;
cin >> n >> k;
vector<vector<int> > hall(k+1,vector<int>(k+1,0));
for(int i=0;i<n;i++) {
int req;
cin >> req;
bool found=0;
int x,l,r,score=1e9;
for(int row=1;row<=k;row++) {
for(int col=1;col<=k-req+1;col++) {
int curr=req*abs(row-k/2-1);
bool flag=0;
for(int j=col;j<col+req;j++) {
if(hall[row][j]) {
flag=1;
break;
}
curr+=abs(j-k/2-1);
}
if(flag) continue;
if(curr<score) {
found=1;
score=curr;
x=row;
l=col;
r=col+req-1;
}
}
}
if(found) {
printf("%d %d %d\n", x,l,r);
for(int i=l;i<=r;i++) hall[x][i]=1;
} else {
cout << -1 << endl;
}
}
}
int main() {
// freopen("input.txt","r",stdin);
// freopen("output.txt","w",stdout);
// ios_base::sync_with_stdio(false);
// cin.tie(NULL);
int t=1;
// cin >> t;
while(t--) {
solve();
}
}
169B - Replacing Digits | 171D - Broken checker |
380C - Sereja and Brackets | 1281B - Azamon Web Services |
1702A - Round Down the Price | 1681C - Double Sort |
12A - Super Agent | 1709A - Three Doors |
1680C - Binary String | 1684B - Z mod X = C |
1003A - Polycarp's Pockets | 1691B - Shoe Shuffling |
1706A - Another String Minimization Problem | 1695B - Circle Game |
1702B - Polycarp Writes a String from Memory | 1701A - Grass Field |
489C - Given Length and Sum of Digits | 886B - Vlad and Cafes |
915A - Garden | 356A - Knight Tournament |
1330A - Dreamoon and Ranking Collection | 1692B - All Distinct |
1156C - Match Points | 1675A - Food for Animals |
1328C - Ternary XOR | 1689A - Lex String |
1708B - Difference of GCDs | 863A - Quasi-palindrome |
1478A - Nezzar and Colorful Balls | 1581B - Diameter of Graph |